package com.example.sensordemo_type_gyroscope;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private SensorManager sensorManager;    //  传感器管理 对象
    private Sensor gyroscopeSensor;   //    陀螺仪传感器 对象；
    private SensorEventListener gyroscopeEventListener; //  陀螺仪事件监听器 对象；


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 获取一个传感器管理器 对象
        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        // 获取 陀螺仪创安起对象
        gyroscopeSensor = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
        // 判断是否获取到了传感器，如果没有的话直接结束activity；
        if (gyroscopeSensor == null) {
            Toast.makeText(this, "The device has no Gyroscope !", Toast.LENGTH_LONG).show();
            finish();
        }

        // 获取得到了sensor，则初始化 传感器的 监听器；
        gyroscopeEventListener = new SensorEventListener() {
            @Override
            public void onSensorChanged(SensorEvent event) {
                // 当传感器数据发生变化时 ： 进行处理
                // 下面逻辑： 当绕z轴的加速度大于0.5 设置为蓝色； 小于-0.5则设置为黄色；
                switch (event.sensor.getType()) {
                    case Sensor.TYPE_GYROSCOPE:
                        if (event.values[2] > 1.5f) {
                            getWindow().getDecorView().setBackgroundColor(Color.BLUE);
                        } else if (event.values[2] < -1.5f) {
                            getWindow().getDecorView().setBackgroundColor(Color.YELLOW);
                        }
                        break;
                    default:
                        break;
                }
            }

            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {

            }
        };
    }

    @Override
    protected void onResume() {
        super.onResume();
        // 为传感器 配置 监听器 和 相关属性
        sensorManager.registerListener(gyroscopeEventListener, gyroscopeSensor, SensorManager.SENSOR_DELAY_FASTEST);
    }

    @Override
    protected void onPause() {
        super.onPause();
        // 为传感器 注销监听器；
        sensorManager.unregisterListener(gyroscopeEventListener);
    }
}